<?php
/**
 * フォームインプットクラス
 */
require_once __DIR__ . '/Abstractor.php';
require_once __DIR__ . '/GeneralAttribute.php';

/**
 * フォームインプットクラス
 * @author admin
 *
 */
class Hlib_Form_Input extends ZendPartialController
{
	/** 共通属性 */
	public $GeneralAttibutes = NULL;
	/** H2+/e2+/N2+/i1+。部品の種類を指定します。 */
	public $type = '';
	/** H2+/e2+/N2+/i1+。名前を指定します。 */
	public $name = '';
	/** H2+/e2+/N2+/i1+。入力フィールドの初期値を指定します。 */
	public $value = '';
	/** H4+/e4+/N6+/i1+。例えば accesskey=X としておくと、キーボードで ALT キーを押しながら X キーを押した時、この部品にフォーカスが移動します。 */
	public $accesskey = '';
	/** H4+/e4+/N6+。タブインデックスを指定します。 */
	public $tabindex = '';
	/** H4+/e4+/N6+。部品を無効化します。 */
	public $disabled = '';
	/** H4+/e4+/N6+。読み出し専用にします。 */
	public $readonly = '';
	/** H2+/e2+/N2+/i1+。最大入力文字数を指定します。 */
	public $maxlength = '';
	/** H2+/e2+/N2+/i1+。入力フィールドの大きさを指定します。 */
	public $size = '';
	/** H2+/e2+/N2+/i1+。このチェックボックスをあらかじめチェックした状態にしておきます。 */
	public $checked = '';
	/** i2+。i-modeにおいて、入力モードの初期値を指定します。
	 * かな入力モードの時は、1（全角カナ）、2（半角カナ）、3（英字）、4（数字）となり、
	* ポケットベル入力時は、1（全角文字）、2（半角文字）、3（小文字推奨半角文字）、4（数字推奨半角文字）
	* となります。
	*/
	public $istyle = '';
	/** H4+。送信するデータのMIMEタイプの候補リストをカンマで区切って指定します。あまり使用されていません。 */
	public $accept = '';
	/** H2-H4T/e2+/N2+。表示位置を指定します。 */
	public $align = '';
	/** H4+/e2+。画像の代わりに表示する代替テキストを指定します。 */
	public $alt = '';
	/** N2+。画像の周りの枠線の太さをピクセルで指定します。 */
	public $border = '';
	/** e4+。画像の代わりに動画（*.avi）を表示します。 */
	public $dynsrc = '';
	/** e4+/N2+。画像の高さをピクセルまたはパーセンテージで指定します。 */
	public $height = '';
	/** H2+。サーバーサイドクリッカブルマップを実現する際に用います。 */
	public $ismap = '';
	/** e4+。src で指定した画像を転送する間に表示する、荒い（サイズの小さい）画像の URL を指定します。 */
	public $lowsrc = '';
	/** H2+/e2+/N2+。表示する画像ファイルの URL を指定します。 */
	public $src = '';
	/** e4+/N2+。画像の横幅をピクセルまたはパーセンテージで指定します。 */
	public $width = '';
	/** 表示文字 */
	public $contents;

	const TYPE_TEXT = "text";
	const TYPE_PASSWORD = "password";
	const TYPE_CHECKBOX = "checkbox";
	const TYPE_RADIO = "radio";
	const TYPE_FILE = "file";
	const TYPE_HIDDEN = "hidden";
	const TYPE_SUBMIT = "submit";
	const TYPE_RESET = "reset";
	const TYPE_BUTTON = "button";
	const TYPE_IMAGE = "image";
	
	/** 全角カナ */
	const ISTYLEZENKANA = 1;
	/** 半角カナ */
	const ISTYLEHANKANA = 2;
	/** 英字 */
	const ISTYLEEIJI = 3;
	/** 数字 */
	const ISTYLESUJI = 4;
	
	/** テンプレートネーム */
	const TEMPLATE_NAME = 'input.tpl';
	
	/**
	 * コンストラクタ
	 */
	public function __construct()
	{
		$TemplateDir = __DIR__;
		parent::__construct($TemplateDir);
		$this->GeneralAttibutes = new Hlib_Form_GeneralAttribute();
	}
	
	/**
	 * フェッチ
	 * (non-PHPdoc)
	 * @see ZendPartialController::fetch()
	 */
	public function fetch()
	{
		/***
		 * タイプ属性から初期表示を設定する
		 */
		$this->initValue();
		/***
		 * テンプレートに値を通知する
		 */
		$this->view->type = $this->type;
		$this->view->name = $this->name;
		$this->view->value = $this->value;
		$this->view->accesskey = $this->accesskey;
		$this->view->tabindex = $this->tabindex;
		$this->view->disabled = $this->disabled;
		$this->view->readonly = $this->readonly;
		$this->view->maxlength = $this->maxlength;
		$this->view->size = $this->size;
		$this->view->checked = $this->checked;
		$this->view->istyle = $this->istyle;
		$this->view->accept = $this->accept;
		$this->view->align = $this->align;
		$this->view->alt = $this->alt;
		$this->view->border = $this->border;
		$this->view->dynsrc = $this->dynsrc;
		$this->view->height = $this->height;
		$this->view->ismap = $this->ismap;
		$this->view->lowsrc = $this->lowsrc;
		$this->view->src = $this->src;
		$this->view->width = $this->width;
		$this->view->general_attribute = $this->GeneralAttibutes->fetch();
		
		$sHtml = parent::fetch(self::TEMPLATE_NAME);
		$sHtml = str_replace("\t", '', $sHtml);
		return $sHtml;
	}
	
	/**
	 * 初期表示値設定
	 * (non-PHPdoc)
	 * @see Hlib_Form_Input::initValue()
	 */
	protected function initValue()
	{
		if (isset($_REQUEST[$this->name])) {
			$this->value = $_REQUEST[$this->name];
		}
		return;
	}
	
}
